package com.quanyan.riding.mapper;

import com.quanyan.riding.entity.db.TbRidingBikePeople;
import com.quanyan.riding.entity.vo.RidingFootPrint;
import com.quanyan.riding.entity.vo.RidingPathUser;
import com.quanyan.riding.entity.vo.resp.RespRidingCheckBike;
import com.quanyan.riding.entity.vo.resp.RespRidingRecord;
import com.quanyan.riding.entity.vo.resp.RespRidingRecordMonth;
import com.quanyan.riding.entity.vo.resp.RespUpdateBikePeopleLocation;

import java.util.List;
import java.util.Map;

public interface MyTbRidingRecordMapper {

    /**
     * 获取用户月骑行记录详情
     * @param paramMap
     * @return
     */
    List<RespRidingRecord> getRidingRecord(Map<String, Object> paramMap);

    /**
     * 获取用户骑行总里程,总时间
     * @param userId
     * @return
     */
    List<Map<String,Object>> getRidingUserMileage(String userId);

    /**
     * 获取用户月骑行记录
     * @param paramMap
     * @return
     */
    List<RespRidingRecordMonth> getRidingRecordMoth(Map<String, Object> paramMap);

    /**
     * 查询所有在路书上的用户
     * @param pathId
     * @return
     */
    List<RidingPathUser> getRidingPathUserMsg(int pathId);

    /**
     * 查询路书上所有用户足迹
     * @param pathId
     * @return
     */
    List<RidingFootPrint> getRidingFootPrintUserMsg(int pathId);

    /**
     * 每隔30分钟删除路书上用户
     * @return
     */
    int delRidingPathUser();

    /**
     * 点击组队，进入首页查询该用户所有的车队信息
     * @param tbRidingBikePeoples
     * @return
     */
    List<RespRidingCheckBike> getRidingBikeMsg(List<TbRidingBikePeople> tbRidingBikePeoples);

    /**
     * 查询最早建的车队或者最早建的车队并且人数为1的车队
     * @param paramMap
     * @return
     */
    Map<String,Object> getRidingBikeMinCreateTime(Map<String, Object> paramMap);

    /**
     * 每隔一小时，删除创建时间大于72小时的车队
     */
    int delRidingBike();

    /**
     * 每隔一小时，删除创建时间大于72小时的车队成员信息
     * @return
     */
    int delRidingBikePeople();

    /**
     * 定时删除车队及成员信息，并回收车队口令
     * @return
     */
    List<Map<String,Object>> recycleBikeCommand();

    /**
     * 实时跟新车队成员位置
     * @param paramMap
     * @return
     */
    int updateBikePeopleLocation(Map<String, Object> paramMap);

    /**
     * 实时获取车队成员位置
     * @param paramMap
     * @return
     */
    List<RespUpdateBikePeopleLocation> getBikePeopleLocation(Map<String, Object> paramMap);

    /**
     * 跟新车队成员数量
     * @param command
     * @return
     */
    int updateRidingBikePeople(String command);

    /**
     * 跟新车队公告
     * @param paramMap
     * @return
     */
    int updateRidingBikeNotice(Map<String, Object> paramMap);

}